Projektni zadatci



1. Zmija (Alen Andrašek) - napravite vlastitu verziju poznate igre. Osnovna postavka igre je da zmija mora doći do kvadratića na plohi kretanja bez da se sudari sa samom sobom ili sa zidom. Kad dođe do kvadratića, "pojede" ga pa joj se duljina poveća za jediničnu duljinu. Igra bi se trebala sastojati od više razina različite težine. Cilj svake razine je npr. dostići određenu duljinu zmije ili neki broj bodova. Razine se mogu razlikovati po brzini kretanja zmije, zatim možete dodati neke dodatne prepreke s kojima se zmija ne smije sudariti, možete mijenjati i oblik prostora unutar kojeg se zmija kreće. Također, na plohi kretanja se mogu nalaziti predmeti za koje, ako ih zmija pojede, igrač može dobiti dodatne bodove, izgubiti bodove, može prijeći na drugu razinu, može se promijeniti smjer kretanja zmije ili joj se duljina smanji ili poveća na neki drugi način od uobičajenog. Za neki tip "hrane" postavite da je jasno kako utječe (nekom kombinacijom tipaka neka je moguće dobiti informativni prozor), dok se za drugu "hranu" ponašanje određuje slučajnim odabirom. Ubacite na neku razinu mogućnost da se u ovisnosti o nekim događajima pojave mjesta na kojima zmija smije preskočiti samu sebe. Da bi igra tekla dinamičnije, dozvolite brže kretanje zmije na način da pritiskanjem strelica i numeričke tipke pomaknete odjednom zmiju za određen broj polja u zadanom smjeru. S tipkom SHIFT i strelicom smjera, zmija bi trebala ići do samog ruba plohe. Uz neku drugu kombinaciju, pomakne se koliko je najviše moguće u tom smjeru, a da se ne sudari sa samom sobom. U postavkama igre igrač može sam namjestiti tipke koje mu odgovaraju za te operacije. Na nekoj od viših razina možete ubaciti i drugu zmiju kojom upravlja računalo i koja je protivnik igračevoj zmiji. Cilj je ne sudariti se sa zmijom kojom upravlja računalo. Zmije se naizmjenično pomiču. Također neka je moguće dobiti i određen broj pauza u igri. Možete odrediti i broj života koje zmija može potrošiti u igri.
2. Tetris (Hrvoj Ćošković) - napravite igru po već poznatim pravilima. Korisnik bi trebao dobiti mogućnost definiranja igre. Neka bude moguć odabir likova s kojima će se igrati, možete dopustiti različit skup likova po nivoima. Omogućite i definiranje nestandardnih likova (npr. odabirom na ploči 3×3) te odabir različitih vrsta okvira u kojima padaju likovi. U nekim okvirima se mogu nalaziti i manje prepreke koje povremeno mijenjaju mjesto. Ubacite još neke opcije poput toga da se na nekom nivou u isto vrijeme spuštaju po dva lika te pritiskom numeričkih tipki možemo prebacivati upravljanje s jednog lika na drugi. Također, neka je moguće da se na pozadini pojavljuju nagradni kvadratići. Kad lik pri padu dotakne kvadratić, moguće je dobiti dodatne bodove koji se npr. mogu iskoristiti tako da se lik u nekom trenutku pomakne nekoliko redaka prema gore ili se u trenutku kad želimo iskoristiti bodove počinje spuštati lik koji se optimalno uklapa. Omogućite i promjenu pogleda na igru, npr. likovi se kreću prema gore, umjesto da padaju ili slijeva na desno. Za određen tip igre, treba prikazati popis najboljih dosadašnjih rezultata.
3. Puzzle (Valerija Iva Banić, Petar Bratulić, Lea Bundalo)- napravite aplikaciju u kojoj se sastavlja puzzla, s tim da se može birati puzzla s različitim brojem dijelova, n × n ili n × m. Također, može se i birati broj slobodnih polja u puzzli. Cilj je napraviti sliku u kojoj su u svakom redu dijelovi iste boje ili su dijelovi označeni brojevima pa ih treba sastaviti po redu. Može se sastavljati i neka konkretna slika. Omogućite igraču da sam određuje postavke igre. Dijelovi u puzzli mogu se pomicati klikom na susjedno polje ili povlačenjem (dozvolite odabir te opcije). Sa strane postoji slika neke stvari, osobe i sl. koja je više puta zamućena nekim filterom (dozvolite odabir teme koja će se pogađati te napravite nekoliko različitih filtera koji će se izmjenjivati). Svaki put kad se sastavi puzzla, slika se vraća prema normalnoj za jedan stupanj. Igrač može u tom trenutku pogađati. Ako ne pogodi, mora sastavljati novu puzzlu. Ukoliko nije u stanju sastaviti puzzlu, može odustati, dobije novu puzzlu i slika se zamuti za jedan stupanj.
4. Konstruktor - napravite aplikaciju koja omogućuje sastavljanje konstrukcija od manjih dijelova. Dijelovi su oblika kvadra i razlikuju se po veličini. Nalaze se u izborniku, a korisnik unošenjem dimenzija može dodati još dijelova u izbornik. Na najnižoj razini dozvoljeno je staviti bilo koji dio. Na višoj razini dio se može staviti samo ako se dva suprotna ruba mogu kompletno položiti na dijelove s niže razine. Preciznije, postoji neka osnovna duljina "o" i svaki dio ima duljinu, širinu i visinu koje su višekratnici te osnovne duljine. Nadalje, ako bazu dijela poistovijetimo s matricom m×n (baza dakle ima dimenzije "mo×no"), onda se moraju moći potpuno položiti prvi i n-ti stupac ili prvi i m-ti redak. Dijelovi uvijek moraju stajati vodoravno, a vrhovi im imaju cjelobrojne koordinate. Program u središnjem panelu u početku pokazuje tlocrt konstrukcije, ali može se mijenjati pogled, tj, konstrukcija bi se trebala moći vidjeti sa svih pet vidljivih strana. Taj pogled bi cijelo vrijeme trebao biti omogućen u dodatnim umanjenim panelima. Pogled je dakle uvijek dvodimenzionalan. Dodavanje nekog dijela na konstrukciju se može obaviti povlačenjem dijela iz izbornika dijelova te ispuštanjem "blizu" mjesta gdje ga želimo postaviti ako je to postavljanje legalno. Drugi način je uključivanjem mreže na konstrukciju te izborom dijela i odabirom neke točke na mreži. Dodavanje se može vršiti neovisno o tome koji je pogled u središnjem panelu (u slučaju kad nemamo tlocrt u središnjem panelu treba paziti na dubinu postavljanja). Pritom konstrukcija može biti u jednoj boji ili se mogu posebno obojati dijelovi na istoj razini. Omogućite i poništavanje nekoliko zadnjih poteza, zatim micanje zadanog dijela s konstrukcije, uklanjanje cijelog nivoa, spremanje konstrukcije i ponovno učitavanje, tj. mijenjanje već postojeće konstrukcije.
5. TV manager - napravite aplikaciju koja radi program za neku televiziju. U bazu se unose podaci o emisijama, filmovima, uplaćenim reklama itd. Emisije se dijele na više različitih vrsta. Npr. postoje emisije za koje se točno zna u koje dane se emitiraju, uvijek je isto vrijeme prikazivanja ili s jako malim odstupanjem, poput dnevnika, sporta, vremenske prognoze, nekih kvizova i sl. Za te emisije je potrebno namjestiti i prioritete, tj. je li moguće takvu emisiju ipak u nekim iznimnim prilikama premjestiti u neki drugi termin. Potrebno je zatim paziti na broj dopuštenih reklama. Za svaku reklamu se upisuje cijena i ostali podaci poput vrste termina u kojoj bi se reklama trebala prikazati, hoće li se prikazivati prije ili za vrijeme neke emisije, odnosno filma. Neka reklama se može prikazivati više puta ili se sastoji od više dijelova koji se moraju prikazati u istom bloku reklama, ali ne jedan za drugim. Uz zadane postavke aplikacija bi trebala napraviti raspored, ali raspored bi se ipak trebao moći dorađivati i ručno. Također, trebao bi se moći prikazati demo tog programa za neki zadani termin. U programu se namješta broj dana za koji je potrebno unaprijed znati raspored. U nekim izvanrednim situacijama, moguće je da se mora uvesti neka izvanredna emisija, te bi aplikacija trebala dati prijedlog kad bi bilo idealno ubaciti emisiju, tako da nema previše otkazivanja reklama. Također je moguće otkazivati neke emisije (npr. zbog cenzure), te aplikacija mora u zadnji tren ubaciti nešto iz rezervnog programa.
6. Labirint (Valentina Križ, Jelena Kurilić) – aplikacija bi trebala napraviti slučajno izgenerirani labirint. Neka su moguće bar tri razine igre, što se tiče kompliciranosti labirinta. Moguće je na nekoj razini postaviti i odgovarajući zadatak, npr. da igrač treba doći do nekog plijena u labirintu prije nego što nađe izlaz. Plijen se može i premještati ako se ne obavi zadatak u određeno vrijeme ili ukloniti. Igrač se kreće po labirintu mišem ili pomoću strelica i može dobiti na zahtjev i malu pomoć. Ako se koristi mišem, može se iscrtavati ravna linija sredinom staze ili slobodna linija. U slučaju slobodne linije može se zadati da je zabranjeno dotaknuti zid i da se u tom slučaju vraćamo nekoliko koraka unatrag. Bodovanje ovisi o skupljenim plijenovima, brzini kretanja, odstupanju od sredine staze, za pomoć se oduzima nešto bodova (osmislite sami).
7. Picture tool - napravite aplikaciju za crtanje. Moguće je crtati točke, linije, nekoliko ravninskih likova (kružnice, elipse, pravokutnike (s ispunom ili bez)). Dozvolite odabir nekih karakteristika za sve te elemente. Neka je moguće u plohu za crtanje učitati i neku sliku. Na sliku bi se trebao moći primijeniti filter, treba iz nje moći izrezati neki dio, rotirati ju i sl. Program mora imati i history koji pokazuje određen broj posljednjih poteza na slici te omogućuje poništavanje nekoliko zadnjih poteza. Također, neka je moguće iz izbornika odabrati predloške za kolaže. Npr. kolaž može sličiti na ploču sastavljenu od kvadrata te se u svaki od njih treba umetnuti odabrana slika. Korisniku se mora omogućiti da i sam kreira svoj predložak.
8. Kviskoteka (Davorin Gradecak, Marin Gunja, Petra Jambrisko, Jakov Krunic) - ovaj projekt može raditi i tim od četiri studenta ili možete raditi onoliko igara koliko je članova u timu.

Napravite „Igru ABC pitalica“, „Igru asocijacija“, “Igru detekcije“ i „Završnu igru znanja“. Igrač igra protiv dvojice protivnika kojima upravlja računalo. Svaki od njih ima određene predispozicije za svaku vrstu igre, tj. vjerojatnost davanja točnih odgovora (može se namjestiti u postavkama igre). „Igra ABC pitalica“ je prva igra, s lakšim pitanjima od završne. Ponuđeni su naravno odgovori pod a), b) i c). Cilj je da igrači postignu zadan broj bodova kako bi dobili „Kviska“ kojeg kasnije mogu uložiti u bilo kojoj igri i na taj način im se u toj igri udvostručuje broj bodova. Protivnici će uložiti eventualno dobivenog „Kviska“ s najvećom vjerojatnošću u igri koja im najbolje leži. „ Igra asocijacija“ neka funkcionira po poznatom principu (četiri stupca s pojmovima, svaki stupac ima rješenje na koje asociraju pojmovi iz tog stupca i postoji konačno rješenje). Igrač može otvarati novo polje ako je prethodno nešto pogodio, inače se prelazi na novog igrača. U svakom trenutku ima pravo pogađati rješenje stupca ili konačno rješenje. „Igra detekcije“ funkcionira tako da je osoba koja se pogađa opće poznata, na ekranu se vide osobe A, B i C koje izgledaju isto i predstavljaju se kao zadana osoba. Igrači postavljaju tim osobama pitanja birajući ih sa zadane liste i potrebno je pogoditi koja je osoba prava na temelju broja točnih odgovora. Prava osoba će odgovarati točno na sva osobna pitanja, dok će ostale dvije osobe odgovarati točno sa smanjenom vjerojatnošću. Na pitanja koja su vezana za struku te osobe, prava osoba odgovara s većom vjerojatnošću od ostalih. Igrači imaju ograničeno vrijeme za postavljanje pitanja. „Završna igra znanja“ se sastoji od pitanja na koja nisu ponuđeni odgovori. Treba simulirati prijavljivanje tasterom. Program može prihvatiti prijavu nekog od igrača u točno određenim vremenskim trenucima, odnosno nekim kratkim intervalima (ako je u tom trenutku detektirao samo tu jednu prijavu). Za protivnike bi trebalo napraviti slučajne trenutke pritiskanja tastera (trebaju biti prikazani vizualno). Ukoliko igrač koji ima pravo odgovarati ne odgovori točno, odgovara igrač čiji je trenutak prijave bio najbliži dopuštenom intervalu za prijavu. Sami osmislite način bodovanja za svaku igru. Treba postojati opcija dodavanja pitanja za svaku igru (na razini administratora).
9. GPS (Goran Lalić, Ivan Leverić)- napravite aplikaciju koja stvara plan nekog grada. U plan se dodaju čvorovi koji predstavljaju križanja ili trgove i linije koje ih povezuju koje predstavljaju ulice (jednosmjerne ili dvosmjerne). Novi čvorovi se dodaju ili preko koordinata ili pomoću udaljenosti u odnosu na neka druga dva čvora. Svaki čvor i linija imaju neke karakteristike (trgovina, pošta, benzinska, garaža i sl.). Detalji o ulici ili nekom objektu se pamte u bazi i mogu na zahtjev korisnika biti prikazani u jednom dijelu prozora, s osnovnim ili detaljnim informacijama. Korisnik može unositi odredište i dobiti plan puta na temelju različitih kriterija poput najkraćeg puta ili puta u kojem može obaviti i neki posao (otići u neki tip trgovine, poštu, itd.). Program bi trebao iscrtati što idealniju putanju s dodatnim podacima o putu. Na zahtjev korisnika na planu se mogu istaknuti sve ulice i trgovi sa zadanim karakteristikama.
10. Auto servis (Mihaela Bos, Vedran Deduš, Sebastian Kralj) - napravite aplikaciju za praćenje stanja u nekom auto servisu. Potrebno je pohranjivati podatke poput termina servisa, informacija o automobilu i njegovom vlasniku, dostupnim rezervnim dijelovima, zaduženjima osoblja i sl. Za svaku uslugu treba moći unijeti detaljne podatke i ispisati račun, predračun ili radni nalog.
11. Rezač materijala - napravite aplikaciju koja stvara nacrt za rezanje materijala. U početku svaki komad materijala ima pravokutni oblik. Korisnik unosi veličinu i oblik jednog ili više komada koji se trebaju izrezati (radi jednostavnosti možete pretpostaviti da su komadi uvijek pravokutnog oblika). Aplikacija bi trebala predložiti što optimalniji način izrezivanja. U skladištu se naravno može naći više komada istog materijala i treba odabrati onaj na kojem bi izrezivanje bilo najprikladnije. Pritom naravno treba voditi računa o tipu materijala. Kod sasvim homogenog materijala je nebitno kako se izrezuje, kod ostalih je važan smjer. Na kraju je potrebno i obračunati cijenu komada. Trebalo bi zaračunati i dio za koji se procijeni da će ga zbog načina rezanja biti teško prodati. Konkretno, može se ručno unijeti kolika je dozvoljena veličina "otpatka" materijala. S druge strane, neka program prati prodaju materijala, te ovisno o veličinama koje se prodaju, neka je moguće izgenerirati koliki je dozvoljen gubitak. U svakom trenutku treba grafički prikazati materijal koji se izrezuje. Na materijalu treba biti uočljiv tip materijala (tj. dopušteni način rezanja). Dozvoljeno je i ručno iscrtavanje kako će se rezati. Neka program izrađuje i račun koji se može isprintati.
12. Daktilograf (Bjanka Bašić, Jelena Lončar) - napravite program koji korisniku omogućuje vježbanje brzog tipkanja na računalu. Na sučelju se mora nalaziti slika tipkovnice (osnovnih tipaka), a korisniku su ponuđene vježbe raznih težina. Program može nuditi razne opcije, da se korisniku učita neka od vježbi s odabranog nivoa (vježbe su unaprijed pripremljene), zatim da si sam sastavlja vježbu (omogućuje mu se odabir slova koje želi vježbati, a zatim program sam generira vježbu (može se birati duljina vježbe, duljina riječi i sl.)). Generirane vježbe se mogu i spremati i ponovno učitavati. Moguće je birati opciju prikaza slova koje se treba upisati na tipkovnici na ekranu te da se preskače slovo koje nije točno upisano ili da program čeka da se upiše točno slovo. Na kraju vježbe treba omogućiti dobivanje podataka poput vremena tipkanja, broja točno upisanih slova i sl. Omogućeno je i spremanje statističkih podataka u cilju praćenja napretka.
13. Text editor (Marija Lujo) - aplikacija služi naravno za pisanje i uređivanje teksta. Treba biti omogućen rad s više dokumenata. Mora imati File i Edit izbornik (za učitavanje, spremanje datoteka, printanje, copy, paste, uređivanje fonta, postavljanje veličine uvlake (tab) i sl.). Neka je moguća i opcija da se u prozor editora uključi web pretraživač na mjesto po izboru (npr. u desni dio glavnog prozora), radi lakšeg kopiranja. Također, neka se može uključiti opcija da editor funkcionira djelomično kao C# editor. Konkretno, neka je pri upisivanju neke riječi uvijek ponuđen popis ključnih riječi ili varijabli koje su se dotad spomenule, a koje počinju s dotad napisanim slovima tako da korisnik može izabrati riječ iz izbornika. Neka su različitim bojama označeni svi parovi vitičastih zagrada i sl.
14. Lutrija (Jelena Rajič, Ante Sosa) - napravite program za poslovnicu lutrije. Program vodi evidenciju o uplaćenim listićima za više tipova igara, poput lota, binga, igri klađenja (osmislite sami). U bazi se moraju pratiti identifikacijski brojevi listića i označena polja na listiću, vrijeme uplate i ostalo. Program mora moći izbaciti sve dobitne listiće, te mora proračunavati iznose dobitaka na temelju postavki koje zadaje korisnik. Na zahtjev klijenta sam generira brojeve koji će se zaokružiti na listiću. Nudi se opcija da se listić popunjava dijelom i na temelju statističkih podataka iz prošlosti. Ukoliko klijent sam ispunjava listić, brojevi koji se uplaćuju mogu se unositi ručno ili skeniranjem slike listića iz koje program mora sam izvući brojeve.
15. Hotelska recepcija (Mia Matijašević, Mia Tadić) - napravite aplikaciju koja prati stanje u nekom hotelu, sobe i apartmane i njhove karakteristike, zatim trenutne goste i rezervacije i ostale usluge koje hotel nudi. Treba moći pohranjivati i informacije o osoblju, raspored zaduženja i sl. Na zahtjev se treba ispisivati račun ili predračun za svaku vrstu boravka, odnosno usluge.
16. Lažljivac (Ivan Lazarić, Ivan Miošić, Ivan Žufić)- napravite kartašku igru. Igrač igra protiv računala. Onaj tko je prvi na potezu baca kartu i kaže boju koja se nalazi na karti (pri čemu je moguće da laže), a protivnik "potvrđuje" boju na isti način. Bačene karte su naravno skrivene. Nakon svakog poteza nekog igrača, njegov protivnik može otkriti prvu kartu na hrpi i reći "Lažeš". Ukoliko je pogodio, sve karte na hrpi idu protivniku, inače idu njemu. Igra završava kad jedan od igrača ostane bez karata i on je pobjednik. Na početku svake igre karte se moraju izmiješati. Svaki igrač počinje s nekim zadanim brojem karata, a zatim nakon svake bačene karte vuče kartu iz ostatka "špila" na stolu, sve dok ima takvih karata. Napravite mogućnost odabira različitih verzija igre (ovisno o vrstama karata, broju karata u "špilu", broju igrača). Također, neka se može izabrati verzija u kojoj računalo baca karte slučajnim odabirom, zatim verzija u kojem nema nikakvog uvida u karte protivničkog igrača, ali pamti koliko je karata koje boje bacio pa na tome radi neku strategiju i verziju u kojoj uz to ima i uvida u to koliko točno drugi igrač ima karata aktualne boje, s tim da mora misliti da uvijek ima barem jednu. Neka je moguće u zadanim vremenskim intervalima prekinuti igru ako predugo traje. Tad se bilježi broj karata koje su ostale kod svakog od igrača pa se prema tome radi rangiranje. Aplikacija bi morala moći dati i statistiku i rezultate prethodnih igara, odnosno top rezultate.
17. Trgovina (Ivan Knezić)- napravite aplikaciju koja služi za prodaju i praćenje artikala u nekoj vrsti trgovine. U bazi se nalaze podaci o svakom artiklu (ime, cijena, kategorija, rok uporabe, datum nabave). Pri izradi računa unosi se kod za svaki kupljeni proizvod. Neka vrsta artikla može imati specijalan popust u nekom razdoblju ili može imati drugačiji porez. Aplikacija treba izraditi račun sa svim podacima. Regulirajte i način plaćanja (gotovina, kartice, čekovi, bonovi). Potrebno je također pratiti i djelatnika koji koristi aplikaciju. Postoje različite razine pristupa (vlasnik trgovine i ostali djelatnici). Program mora upozoravati na istek trajanja neke robe (može se također posebno regulirati u kojem trenutku se to događa, kao što je potrebno i obavještavati o manjku određene robe). Mora postojati i opcija pretraživanja kodova. Ako ne postoji kod na proizvodu, ukucavanjem nekoliko prvih znakova, treba dobiti listu mogućih proizvoda iz koje se može izabrati traženi proizvod, odnosno doći do koda. Ako ne postoji ime koje počinje sa zadanim nizom znakova, treba provjeriti postoji li neka druga riječ u imenu koja počinje sa zadanim nizom.
18. Kolokviji (Maja Piskač, Lucija Puškarić, Matea Stanišić) - napravite aplikaciju za kreiranje razmještaja studenata po predavaonicama u vrijeme pisanja kolokvija (na našem odsjeku). Aplikacija je povezana s bazom u kojoj se nalaze imena studenata te kolegij iz kojeg pišu kolokvij i u koliko sati, raspoloživost dvorana u zadanom terminu i njihove karakteristike. Program bi trebao razmjestiti studente tako da studenti koji pišu kolokvij iz istog kolegija ne sjede jedan do drugog i da, ako je ikako moguće, između dva studenta postoji barem jedno mjesto razmaka. Aplikacija mora dozvoliti grafički pregled razmještaja studenata po predavaonicama (zauzete stolice neka bude obojene različitim bojama ovisno o kolegiju, a za svako mjesto je moguće dobiti osnovne podatke o studentu). Korisnik aplikacije s višom razinom pristupa može ručno zamijeniti mjesto dva studenta.
19. Kino (Tea Poljanić, Ivona Raguž) - napravite aplikaciju koja se koristi na blagajni kina s više dvorana. Aplikacija mora moći prikazivati podatke o svakoj dvorani, tip dvorane, termine u kojima se prikazuje koji film, broj zauzetih sjedala i sl. Morate omogućiti i grafički prikaz svake dvorane u terminu prikazivanja nekog filma pri čemu se treba vidjeti zauzetost sjedala te mora biti moguć odabir sjedala i preko tog načina prikaza. U bazi se čuvaju i podaci o svim filmovima koji se prikazuju u kinu ili će se uskoro prikazivati te je moguće na zahtjev prikazati i te informacije. Moguće je i izraditi te isprintati račun. Aplikacija prati i zaduženja osoblja kina.
20. Križaljka - napravite aplikaciju koja pomaže u sastavljanju križaljki. Korisnik može odabrati već ponuđenu formu križaljke ili sastaviti vlastitu formu. Može učitati već popunjenu križaljku i malo ju modificirati. Uslijed sastavljanja može naknadno mijenjati formu, dodavanjem redaka i stupaca i sl. U križaljku može ubacivati i slike. Kod ubacivanja pojma može dobiti pomoć, popis riječi iz baze koje bi mogle odgovarati. Pojmovima se mogu dodijeliti težine te korisnik može birati riječ i u ovisnosti o težini te može sam modificirati težinu pojma. Mogu se učitati i različita objašnjenja za određeni pojam i dodavati nova. Ponuđeni su mu i razni stilovi križaljke (izbor boje, stil polja i sl.).